package de.gof.ppstool.bestellverwaltung.db;

import java.io.Serializable;
import javax.persistence.*;
import de.gof.ppstool.lagerverwaltung.db.Teil;

/**
 * The persistent class for the bestellposition database table.
 */
@Entity
@NamedQueries({
		@NamedQuery(name = BestellpositionEntity.FINDE_ALLE_BESTELLPOSITIONEN, query = "SELECT DISTINCT bp FROM Bestellposition bp"),
		@NamedQuery(name = BestellpositionEntity.FINDE_BESTELLPOSITION_NACH_ID, query = "SELECT bp FROM Bestellposition bp WHERE bp.bestellpositionId = :"
				+ BestellpositionEntity.PARAM_BESTELLPOSITION_ID) })
@Table(name = "bestellposition")
public class BestellpositionEntity implements Serializable {
	static final String FINDE_ALLE_BESTELLPOSITIONEN = "findeAlleBestellpositionen";
	static final String FINDE_BESTELLPOSITION_NACH_ID = "findeBestellpositionNachId";
	static final String PARAM_BESTELLPOSITION_ID = "bestellposition_id";
	private static final long serialVersionUID = 2260621987036913651L;
	/**
	 * ++++++++++++++++++++++++++++++++++++++++++++++++++
	 * +++++ Attribute von der Klasse Bestellposition +++
	 * ++++++++++++++++++++++++++++++++++++++++++++++++++
	 */
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO, generator = "bestellposition_sequence_name")
	@SequenceGenerator(name = "bestellposition_sequence_name", sequenceName = "bestellposition_bestellposition_id_seq", allocationSize = 1)
	@Column(unique = true, nullable = false, name = "bestellposition_id")
	private Long bestellpositionId;
	@Column(nullable = false, length = 2147483647)
	private String bestellart;
	@Column(length = 2147483647)
	private String bestelldauer;
	@Column(length = 2147483647)
	private Double bestellkosten;
	@Column(nullable = false, length = 2147483647)
	private Integer bestellmenge;
	@ManyToOne
	@JoinColumn(name = "bestellung_id", nullable = false)
	private Bestellung bestellung;
	@OneToOne(mappedBy = "bestellposition")
	@JoinColumn(name = "teil_id")
	private Teil teil;
	@Column(length = 2147483647)
	private String teilId;

	/**
	 * ++++++++++++++++++++++++++++++++++++++++++++++++++
	 * +++++ Konstruktoren der Klasse Bestellposition +++
	 * ++++++++++++++++++++++++++++++++++++++++++++++++++
	 */
	public Bestellposition() {
		super();
	}

	public Bestellposition(Long bestellpositionId, String bestellart,
			String bestelldauer, Double bestellkosten, Integer bestellmenge,
			Bestellung bestellung, Teil teil) {
		super();
		this.bestellpositionId = bestellpositionId;
		this.bestellart = bestellart;
		this.bestelldauer = bestelldauer;
		this.bestellkosten = bestellkosten;
		this.bestellmenge = bestellmenge;
		this.bestellung = bestellung;
		this.teil = teil;
	}

	public Bestellposition(Long bestellpositionId, String bestellart,
			String bestelldauer, Double bestellkosten, Integer bestellmenge,
			Bestellung bestellung, Teil teil, String teilId) {
		super();
		this.bestellpositionId = bestellpositionId;
		this.bestellart = bestellart;
		this.bestelldauer = bestelldauer;
		this.bestellkosten = bestellkosten;
		this.bestellmenge = bestellmenge;
		this.bestellung = bestellung;
		this.teil = teil;
		this.teilId = teilId;
	}

	/**
	 * +++++++++++++++++++++++++++++	
	 * +++++ Getter und Setter +++++
	 * +++++++++++++++++++++++++++++
	 */
	public Long getBestellpositionId() {
		return this.bestellpositionId;
	}

	public void setBestellpositionId(Long bestellpositionId) {
		this.bestellpositionId = bestellpositionId;
	}

	public String getBestellart() {
		return this.bestellart;
	}

	public void setBestellart(String bestellart) {
		this.bestellart = bestellart;
	}

	public String getBestelldauer() {
		return this.bestelldauer;
	}

	public void setBestelldauer(String bestelldauer) {
		this.bestelldauer = bestelldauer;
	}

	public Double getBestellkosten() {
		return this.bestellkosten;
	}

	public void setBestellkosten(Double bestellkosten) {
		this.bestellkosten = bestellkosten;
	}

	public Integer getBestellmenge() {
		return this.bestellmenge;
	}

	public void setBestellmenge(Integer bestellmenge) {
		this.bestellmenge = bestellmenge;
	}

	public Bestellung getBestellung() {
		return this.bestellung;
	}

	public void setBestellung(Bestellung bestellung) {
		this.bestellung = bestellung;
	}

	public String getTeilId() {
		return teilId;
	}

	public void setTeilId(String teilId) {
		this.teilId = teilId;
	}

	public Teil getTeil() {
		return this.teil;
	}

	public void setTeil(Teil teil) {
		this.teil = teil;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((bestellart == null) ? 0 : bestellart.hashCode());
		result = prime * result
				+ ((bestelldauer == null) ? 0 : bestelldauer.hashCode());
		result = prime * result
				+ ((bestellkosten == null) ? 0 : bestellkosten.hashCode());
		result = prime * result
				+ ((bestellmenge == null) ? 0 : bestellmenge.hashCode());
		result = prime
				* result
				+ ((bestellpositionId == null) ? 0 : bestellpositionId
						.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;

		if (obj == null)
			return false;

		if (getClass() != obj.getClass())
			return false;

		BestellpositionEntity other = (BestellpositionEntity) obj;
		if (bestellart == null) {
			if (other.bestellart != null)
				return false;

		} else if (!bestellart.equals(other.bestellart))
			return false;

		if (bestelldauer == null) {
			if (other.bestelldauer != null)
				return false;

		} else if (!bestelldauer.equals(other.bestelldauer))
			return false;

		if (bestellkosten == null) {
			if (other.bestellkosten != null)
				return false;

		} else if (!bestellkosten.equals(other.bestellkosten))
			return false;

		if (bestellmenge == null) {
			if (other.bestellmenge != null)
				return false;

		} else if (!bestellmenge.equals(other.bestellmenge))
			return false;

		if (bestellpositionId == null) {
			if (other.bestellpositionId != null)
				return false;

		} else if (!bestellpositionId.equals(other.bestellpositionId))
			return false;

		return true;
	}

	@Override
	public String toString() {
		return "Bestellposition [bestellpositionId=" + bestellpositionId
				+ ", bestellart=" + bestellart + ", bestelldauer="
				+ bestelldauer + ", bestellkosten=" + bestellkosten
				+ ", bestellmenge=" + bestellmenge + "]";
	}

}
